package com.lutzyt.delivery.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.lutzyt.delivery.bean.DiscountCoupon;
import com.lutzyt.delivery.bean.DiscountCouponItem;

import java.util.List;

/**
 * 优惠券
 * @author zyt
 */
public interface DiscountCouponService extends ActionService<DiscountCoupon>,AuditService<DiscountCoupon> {

  /**
   * 通过ID查询单个优惠券
   *
   * @param id ID
   * @return {@link DiscountCoupon}
   */
  DiscountCoupon findById(Integer id);

  /**
   * 分页查询优惠券
   *
   * @param pageNum  页号
   * @param pageSize 每页大小
   * @return {@link DiscountCoupon}
   */
  IPage<DiscountCoupon> findByPage(int pageNum, int pageSize);

  /**
   * 新增优惠券
   *
   * @param discountCoupon 优惠券
   */
  void insert(DiscountCoupon discountCoupon);

  /**
   * 修改优惠券
   *
   * @param discountCoupon 优惠券
   */
  void update(DiscountCoupon discountCoupon);

  /**
   * 通过ID删除单个优惠券
   *
   * @param id ID
   */
  void deleteById(Integer id);

  /**
   * 批量删除
   * @param ids
   */
  void deleteByIds(List<String> ids);

  /**
   * 根据客户id获取已经领取的优惠券
   * @param id
   * @return
   */
  List<String> findIdsByCustomerId(Integer id);

  /**
   * 根据客户id获取优惠券
   * @param id
   * @return
   */
  List<DiscountCoupon> findByCustomerId(Integer id);

  /**
   * 根据客户id获取可以使用的优惠卷
   * @param id
   * @return
   */
  List<DiscountCoupon> findUnusedByCustomerId(Integer id);

  List<DiscountCoupon> drawList();
}